//
//@author jltxseo
// Created by junlintianxia on 2018/8/9.
//

#include "TutorialLessonFour.h"
#include "util/GLUtils.h"
#include "util/XqLog.h"
#include "../shaders/shaderR.h"

#define  LOG_TAG    "TutorialLessonFour"

TutorialLessonFour::TutorialLessonFour() {

}


TutorialLessonFour::~TutorialLessonFour() {

}

void TutorialLessonFour::create() {
    TutorialLesson::create();
    mShader = new Shader(lessonFourVertexShader,lessonFourFragmentShader);
    //设置程序中顶点位置属性
    mShader->setVertexAttribPointer("a_Position",
                                    3,                  // size  每个顶点属性的数据个数。可能的取值是1、2、3或者4.初始值是4
                                    GL_FLOAT,           // type 数组中每个数据的类型。可能的取值是：GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT, or GL_DOUBLE。初始值是GL_FLOAT。
                                    GL_FALSE,           // normalized?  指定顶点数在被访问的时候是否需要被归一化。
                                    3 * 4,                  // stride  两个连续顶点的属性之间的偏移量。这里从0索引开始取
                                    rectangleVerticesData1            // array buffer offset 指向数组中的第一个顶点属性的第一个数据。
    );
    //设置程序中顶点颜色属性引用id
    mShader->setVertexAttribPointer("a_Color",
                                    4,            // size  每个顶点属性的数据个数。可能的取值是1、2、3或者4.初始值是4
                                    GL_FLOAT,     // type 数组中每个数据的类型。可能的取值是：GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT, or GL_DOUBLE。初始值是GL_FLOAT。
                                    GL_FALSE,     // normalized?  指定顶点数在被访问的时候是否需要被归一化。
                                    0,             // stride  两个连续顶点的属性之间的偏移量。这里从0索引开始取
                                    rectangleColorData1     // array buffer offset 指向数组中的第一个顶点属性的第一个数据。
    );
}


void TutorialLessonFour::change(int width, int height) {
    TutorialLesson::change(width, height);
}


void TutorialLessonFour::draw() {
    TutorialLesson::draw();
    mShader->use();
    //绘制两个三角形就形成矩形
    glDrawElements(GL_TRIANGLES,
                   sizeof(rectangleVerticesIndex1) / sizeof(rectangleVerticesIndex1[0]),
                   GL_UNSIGNED_INT, rectangleVerticesIndex1);
}